\ banner.seq - compliments of f83x 
\ mod to sequential by Tom Zimmer, 4tH version Hans Bezemer

[UNDEFINED] banner     [IF]
[UNDEFINED] char>upper [IF] [NEEDS lib/ulcase.4th] [THEN]
[HEX]
create char-matrix                      \ build the character generator
    (  ) 00000000 , 00000000 , 
    ( !) 10101010 , 10001000 , 
    ( ") 28282800 , 00000000 , 
    ( #) 28287C28 , 7C282800 , 
    ( $) 103C5038 , 14781000 , 
    ( %) 60640810 , 204C0C00 , 
    ( &) 20505020 , 54483400 , 
    ( ') 18180810 , 00000000 , 
    ( () 10204040 , 40201000 , 
    (  ) 10080404 , 04081000 , 
    ( *) 10543810 , 38541000 , 
    ( +) 00101038 , 10100000 , 
    ( ,) 00000018 , 18081000 , 
    ( -) 00000038 , 00000000 , 
    ( .) 00000000 , 00181800 , 
    ( /) 00040810 , 20400000 , 
    ( 0) 38444C54 , 64443800 , 
    ( 1) 10301010 , 10103800 , 
    ( 2) 38440418 , 20407C00 , 
    ( 3) 7C081018 , 04443800 , 
    ( 4) 08182848 , 7C080800 , 
    ( 5) 7C407804 , 04443800 ,
    ( 6) 1C204078 , 44443800 ,
    ( 7) 7C040810 , 20202000 ,
    ( 8) 38444438 , 44443800 ,
    ( 9) 3844443C , 04087000 ,
    ( :) 00303000 , 30300000 ,
    ( ;) 00303000 , 30302000 ,
    ( <) 08102040 , 20100800 ,
    ( =) 00007C00 , 7C000000 ,
    ( >) 20100804 , 08102000 ,
    ( ?) 38440810 , 10001000 ,
    ( @) 3844545C , 58403C00 ,
    ( a) 10384444 , 7C444400 ,
    ( b) 78444478 , 44447800 ,
    ( c) 38444040 , 40443800 ,
    ( d) 78242424 , 24247800 ,
    ( e) 7C404078 , 40407C00 ,
    ( f) 7C404078 , 40404000 ,
    ( g) 3C404040 , 4C443C00 ,
    ( h) 4444447C , 44444400 ,
    ( i) 38101010 , 10103800 ,
    ( j) 04040404 , 04443C00 ,
    ( k) 44485060 , 50484400 ,
    ( l) 40404040 , 40407C00 ,
    ( m) 446C5454 , 44444400 ,
    ( n) 44446454 , 4C444400 ,
    ( o) 38444444 , 44443800 ,
    ( p) 78444478 , 40404000 ,
    ( q) 38444444 , 54483400 ,
    ( r) 78444478 , 50484400 ,
    ( s) 38444038 , 04443800 ,
    ( t) 7C101010 , 10101000 ,
    ( u) 44444444 , 44443800 ,
    ( v) 44444444 , 44281000 ,
    ( w) 44444454 , 546C4400 ,
    ( x) 44442810 , 28444400 ,
    ( y) 44442810 , 10101000 ,
    ( z) 7C040810 , 20407C00 ,
    ( [) 3C202020 , 20203C00 ,
    ( \) 00402010 , 08040000 ,
    ( ]) 78080808 , 08087800 ,
    ( ^) 00001028 , 44000000 ,
    ( _) 00000000 , 0000007C ,
[DECIMAL]

: bit?                                 ( n ---)
  7 - 1 swap rshift and 0<>
  if [char] # else bl then emit
;

: banner                               ( a n -- )
  bounds 8 0 do 
    cr over over ?do
      i c@ 127 and char>upper
      32 - 2 cells * char-matrix + j
      4 /mod swap >r + @c r> 3 - 8 * lshift 
      8 1 do dup i bit? loop drop
    loop
  loop drop drop
;

[DEFINED] 4TH# [IF]
  hide bit?
  hide char-matrix
[THEN]
[THEN]

